package frames.Gerenciamento;

import classes.Categoria;
import logicaBancoDeDados.ConectaProdutos;
import classes.Produto;
import frames.Cadastro.*;
import frames.Menus.*;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import logicaBancoDeDados.ConectaCategorias;

public class GerenciaProdutos extends javax.swing.JFrame {

    SimpleDateFormat formata = new SimpleDateFormat("dd/MM/yyyy");
    GerenciaCategorias gerenciaCategoria = new GerenciaCategorias();
    Categoria categoria = new Categoria();
    List<Produto> listaProd = new ArrayList<Produto>();
    Produto produto = new Produto();
    ConectaProdutos conectaProdutos = new ConectaProdutos();
    ConectaCategorias conectaCategorias = new ConectaCategorias();
    DefaultComboBoxModel modeloCombo = new DefaultComboBoxModel();
    DefaultTableModel model = new DefaultTableModel(null, new String[]{"Produto", "Código de Barras", "Categoria", "Quantidade", "Valor venda", "Valor compra"});
    ListSelectionModel lsProdutos;

    /** Creates new form GerenciaProdutos */
    public GerenciaProdutos() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTextField5 = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jFormattedTextField3 = new javax.swing.JFormattedTextField();
        jLabel6 = new javax.swing.JLabel();
        menuBotao = new javax.swing.JPopupMenu();
        logEntrada = new javax.swing.JMenuItem();
        logSaida = new javax.swing.JMenuItem();
        panelFiltro = new javax.swing.JPanel();
        lbProduto = new javax.swing.JLabel();
        lbBarCode = new javax.swing.JLabel();
        lbCategoria = new javax.swing.JLabel();
        lbQuantidade = new javax.swing.JLabel();
        tfProduto = new javax.swing.JTextField();
        tfBarCode = new javax.swing.JTextField();
        tfQuantidade = new javax.swing.JTextField();
        lbCompra = new javax.swing.JLabel();
        lbVenda = new javax.swing.JLabel();
        ftfCompra = new javax.swing.JFormattedTextField();
        ftfVenda = new javax.swing.JFormattedTextField();
        carregaCB(conectaCategorias.listaTodasCategorias());
        cbCategoria = new javax.swing.JComboBox();
        lbId = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        tfId = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        tfData = new javax.swing.JTextField();
        tfData.setText(formata.format(Calendar.getInstance().getTime()));
        jLabel2 = new javax.swing.JLabel();
        tfVendedor = new javax.swing.JTextField();
        lbMessage = new javax.swing.JLabel();
        panelLista = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tableLista = new javax.swing.JTable();
        mostrarPesquisa(conectaProdutos.listaTodosProdutos());
        panelBotao = new javax.swing.JPanel();
        btVoltar = new javax.swing.JButton();
        btLimpar = new javax.swing.JButton();
        btListar = new javax.swing.JButton();
        btAlterar = new javax.swing.JButton();
        btRemover = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        menuArquivo = new javax.swing.JMenu();
        itemMenuPrincipal = new javax.swing.JMenuItem();
        itemMenuCadastro = new javax.swing.JMenuItem();
        itemMenuGerenciamento = new javax.swing.JMenuItem();
        itemFechar = new javax.swing.JMenuItem();
        menuCadastro = new javax.swing.JMenu();
        itemCadastraDistribuidores = new javax.swing.JMenuItem();
        itemCadastraVendedores = new javax.swing.JMenuItem();
        itemCadastraProdutos = new javax.swing.JMenuItem();
        itemCadastraSaidaEstoque = new javax.swing.JMenuItem();
        menuGerenciamento = new javax.swing.JMenu();
        itemGerenciaCategorias = new javax.swing.JMenuItem();
        itemGerenciaDistribuidores = new javax.swing.JMenuItem();
        itemGerenciaGarantias = new javax.swing.JMenuItem();
        itemGerenciaProdutos = new javax.swing.JMenuItem();
        itemGerenciaVendedores = new javax.swing.JMenuItem();
        menuAjuda = new javax.swing.JMenu();
        itemSobre = new javax.swing.JMenuItem();

        jTextField5.setText("jTextField5");

        jLabel3.setText("jLabel3");

        jFormattedTextField3.setText("jFormattedTextField3");

        jLabel6.setText("jLabel6");

        logEntrada.setText("Log de entrada");
        logEntrada.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                logEntradaActionPerformed(evt);
            }
        });
        menuBotao.add(logEntrada);

        logSaida.setText("Log de saida");
        logSaida.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                logSaidaActionPerformed(evt);
            }
        });
        menuBotao.add(logSaida);

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle("Lista Produtos");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                Confirma(evt);
            }
        });

        panelFiltro.setBorder(javax.swing.BorderFactory.createTitledBorder("Filtro"));
        panelFiltro.setAutoscrolls(true);

        lbProduto.setText("Produto:");

        lbBarCode.setText("Código de Barras:");

        lbCategoria.setText("Categoria:");

        lbQuantidade.setText("Quantidade:");

        tfProduto.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                corProduto(evt);
            }
        });

        tfBarCode.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                corBarcode(evt);
            }
        });

        tfQuantidade.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                corQuantidade(evt);
            }
        });

        lbCompra.setText("Valor Compra:");

        lbVenda.setText("Valor Venda:");

        ftfCompra.setEditable(false);
        ftfCompra.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.00"))));
        ftfCompra.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ftfCompraActionPerformed(evt);
            }
        });
        ftfCompra.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                corCompra(evt);
            }
        });

        ftfVenda.setEditable(false);
        ftfVenda.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.00"))));
        ftfVenda.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                corVenda(evt);
            }
        });

        cbCategoria.setBackground(new java.awt.Color(214, 217, 223));
        cbCategoria.setEditable(true);
        cbCategoria.setModel(modeloCombo);
        cbCategoria.setSelectedIndex(-1);
        cbCategoria.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbCategoriaActionPerformed(evt);
            }
        });
        cbCategoria.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                corCbCateg(evt);
            }
        });

        lbId.setText("ID:");

        tfId.setEditable(false);
        tfId.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                corID(evt);
            }
        });

        jLabel1.setText("Data alteracao:");

        tfData.setEditable(false);

        jLabel2.setText("Vendedor:");

        tfVendedor.setEditable(false);

        javax.swing.GroupLayout panelFiltroLayout = new javax.swing.GroupLayout(panelFiltro);
        panelFiltro.setLayout(panelFiltroLayout);
        panelFiltroLayout.setHorizontalGroup(
            panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelFiltroLayout.createSequentialGroup()
                .addGroup(panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelFiltroLayout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(panelFiltroLayout.createSequentialGroup()
                                .addComponent(lbBarCode)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(tfBarCode, javax.swing.GroupLayout.PREFERRED_SIZE, 247, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lbCategoria)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(cbCategoria, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGroup(panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addGroup(panelFiltroLayout.createSequentialGroup()
                                        .addGap(234, 234, 234)
                                        .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelFiltroLayout.createSequentialGroup()
                                        .addGap(26, 26, 26)
                                        .addComponent(lbCompra)
                                        .addGap(18, 18, 18)
                                        .addComponent(ftfCompra))))
                            .addGroup(panelFiltroLayout.createSequentialGroup()
                                .addComponent(lbId, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(tfId, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(lbProduto)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(tfProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 277, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lbQuantidade)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(tfQuantidade, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(lbVenda)
                                .addGap(18, 18, 18)
                                .addComponent(ftfVenda, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(panelFiltroLayout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(tfData, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(jLabel2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(tfVendedor, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(panelFiltroLayout.createSequentialGroup()
                        .addGap(382, 382, 382)
                        .addComponent(lbMessage, javax.swing.GroupLayout.DEFAULT_SIZE, 426, Short.MAX_VALUE)))
                .addContainerGap())
        );

        panelFiltroLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {ftfCompra, ftfVenda});

        panelFiltroLayout.setVerticalGroup(
            panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelFiltroLayout.createSequentialGroup()
                .addGroup(panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lbQuantidade)
                        .addComponent(tfQuantidade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(lbVenda)
                        .addComponent(ftfVenda, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lbId, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(lbProduto)
                        .addComponent(tfProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(tfId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(6, 6, 6)
                .addGroup(panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lbBarCode)
                        .addComponent(tfBarCode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(lbCategoria)
                        .addComponent(cbCategoria, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(ftfCompra, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(lbCompra))
                    .addComponent(jLabel5))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(panelFiltroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(tfData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2)
                    .addComponent(tfVendedor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        panelLista.setBorder(javax.swing.BorderFactory.createTitledBorder("Lista"));
        panelLista.setAutoscrolls(true);

        tableLista.setAutoCreateRowSorter(true);
        tableLista.setModel(model);
        tableLista.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        tableLista.setUpdateSelectionOnSort(false);
        tableLista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        lsProdutos = tableLista.getSelectionModel();
        lsProdutos.addListSelectionListener(new ListSelectionListener(){
            public void valueChanged(ListSelectionEvent e){
                if(e.getValueIsAdjusting()){
                    tabelaLinhaSelecionada(tableLista.getSelectedRow());
                }
            }
        });
        tableLista.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                clique(evt);
            }
        });
        jScrollPane1.setViewportView(tableLista);

        javax.swing.GroupLayout panelListaLayout = new javax.swing.GroupLayout(panelLista);
        panelLista.setLayout(panelListaLayout);
        panelListaLayout.setHorizontalGroup(
            panelListaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelListaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 728, Short.MAX_VALUE)
                .addContainerGap())
        );
        panelListaLayout.setVerticalGroup(
            panelListaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelListaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 209, Short.MAX_VALUE)
                .addContainerGap())
        );

        btVoltar.setText("Voltar");
        btVoltar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btVoltarActionPerformed(evt);
            }
        });

        btLimpar.setText("Limpar");
        btLimpar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btLimparActionPerformed(evt);
            }
        });

        btListar.setText("Listar");
        btListar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btListarActionPerformed(evt);
            }
        });

        btAlterar.setText("Alterar");
        btAlterar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAlterarActionPerformed(evt);
            }
        });

        btRemover.setText("Remover");
        btRemover.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btRemoverActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout panelBotaoLayout = new javax.swing.GroupLayout(panelBotao);
        panelBotao.setLayout(panelBotaoLayout);
        panelBotaoLayout.setHorizontalGroup(
            panelBotaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelBotaoLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(btAlterar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btRemover)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btListar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btLimpar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btVoltar)
                .addContainerGap())
        );

        panelBotaoLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btAlterar, btLimpar, btListar, btVoltar});

        panelBotaoLayout.setVerticalGroup(
            panelBotaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelBotaoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelBotaoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btVoltar)
                    .addComponent(btLimpar)
                    .addComponent(btListar)
                    .addComponent(btRemover)
                    .addComponent(btAlterar))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        menuArquivo.setText("Menu");

        itemMenuPrincipal.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.SHIFT_MASK));
        itemMenuPrincipal.setText("Menu Principal");
        itemMenuPrincipal.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemMenuPrincipalActionPerformed(evt);
            }
        });
        menuArquivo.add(itemMenuPrincipal);

        itemMenuCadastro.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.SHIFT_MASK));
        itemMenuCadastro.setText("Menu Cadastro");
        itemMenuCadastro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemMenuCadastroActionPerformed(evt);
            }
        });
        menuArquivo.add(itemMenuCadastro);

        itemMenuGerenciamento.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.CTRL_MASK));
        itemMenuGerenciamento.setText("Menu Gerenciamento");
        itemMenuGerenciamento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemMenuGerenciamentoActionPerformed(evt);
            }
        });
        menuArquivo.add(itemMenuGerenciamento);

        itemFechar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.ALT_MASK));
        itemFechar.setText("Fechar");
        itemFechar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemFecharActionPerformed(evt);
            }
        });
        menuArquivo.add(itemFechar);

        jMenuBar1.add(menuArquivo);

        menuCadastro.setText("Cadastro");

        itemCadastraDistribuidores.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.CTRL_MASK));
        itemCadastraDistribuidores.setText("Distribuidores");
        itemCadastraDistribuidores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemCadastraDistribuidoresActionPerformed(evt);
            }
        });
        menuCadastro.add(itemCadastraDistribuidores);

        itemCadastraVendedores.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SPACE, java.awt.event.InputEvent.CTRL_MASK));
        itemCadastraVendedores.setText("Vendedores");
        itemCadastraVendedores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemCadastraVendedoresActionPerformed(evt);
            }
        });
        menuCadastro.add(itemCadastraVendedores);

        itemCadastraProdutos.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ENTER, 0));
        itemCadastraProdutos.setText("Produtos");
        itemCadastraProdutos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemCadastraProdutosActionPerformed(evt);
            }
        });
        menuCadastro.add(itemCadastraProdutos);

        itemCadastraSaidaEstoque.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
        itemCadastraSaidaEstoque.setText("Saida de Estoque");
        itemCadastraSaidaEstoque.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemCadastraSaidaEstoqueActionPerformed(evt);
            }
        });
        menuCadastro.add(itemCadastraSaidaEstoque);

        jMenuBar1.add(menuCadastro);

        menuGerenciamento.setText("Gerenciamento");

        itemGerenciaCategorias.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        itemGerenciaCategorias.setText("Categorias");
        itemGerenciaCategorias.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemGerenciaCategoriasActionPerformed(evt);
            }
        });
        menuGerenciamento.add(itemGerenciaCategorias);

        itemGerenciaDistribuidores.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        itemGerenciaDistribuidores.setText("Distribuidores");
        itemGerenciaDistribuidores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemGerenciaDistribuidoresActionPerformed(evt);
            }
        });
        menuGerenciamento.add(itemGerenciaDistribuidores);

        itemGerenciaGarantias.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        itemGerenciaGarantias.setText("Garantias");
        itemGerenciaGarantias.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemGerenciaGarantiasActionPerformed(evt);
            }
        });
        menuGerenciamento.add(itemGerenciaGarantias);

        itemGerenciaProdutos.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        itemGerenciaProdutos.setText("Produtos");
        itemGerenciaProdutos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemGerenciaProdutosActionPerformed(evt);
            }
        });
        menuGerenciamento.add(itemGerenciaProdutos);

        itemGerenciaVendedores.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        itemGerenciaVendedores.setText("Vendedores");
        itemGerenciaVendedores.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemGerenciaVendedoresActionPerformed(evt);
            }
        });
        menuGerenciamento.add(itemGerenciaVendedores);

        jMenuBar1.add(menuGerenciamento);

        menuAjuda.setText("Ajuda");

        itemSobre.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F12, 0));
        itemSobre.setText("Sobre");
        itemSobre.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                itemSobreActionPerformed(evt);
            }
        });
        menuAjuda.add(itemSobre);

        jMenuBar1.add(menuAjuda);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(panelFiltro, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(panelLista, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(panelBotao, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(panelFiltro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelLista, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelBotao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btVoltarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btVoltarActionPerformed
        int resposta = JOptionPane.showConfirmDialog(null, "Deseja finalizar essa operação?", "Finalizar", JOptionPane.YES_NO_OPTION);
        //sim = 0, nao = 1  
        if (resposta == 0) {
            dispose();
        }
    }//GEN-LAST:event_btVoltarActionPerformed

    private void btLimparActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btLimparActionPerformed
        limparTudo();
        mostrarPesquisa(listaProd);

    }//GEN-LAST:event_btLimparActionPerformed

    private void btListarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btListarActionPerformed
        if (tfBarCode.getText().isEmpty() && cbCategoria.getSelectedIndex() == -1 && tfProduto.getText().isEmpty() && tfQuantidade.getText().isEmpty()) {
            listaProd = conectaProdutos.listaTodosProdutos();
        } else {
            if (!tfBarCode.getText().isEmpty()) {
                listaProd = conectaProdutos.listaProduto("%" + tfBarCode.getText() + "%", 4);
            } else if (cbCategoria.getSelectedIndex() != -1) {
                listaProd = conectaProdutos.listaProduto("%" + cbCategoria.getSelectedItem() + "%", 3);
            } else if (!tfProduto.getText().isEmpty()) {
                listaProd = conectaProdutos.listaProduto("%" + tfProduto.getText() + "%", 1);
            } else if (!tfQuantidade.getText().isEmpty()) {
                listaProd = conectaProdutos.listaProduto("%" + tfQuantidade.getText() + "%", 2);
            }
        }
        mostrarPesquisa(listaProd);
    }//GEN-LAST:event_btListarActionPerformed

    private void Confirma(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_Confirma
        int resposta = JOptionPane.showConfirmDialog(null, "Deseja finalizar essa operação?", "Finalizar", JOptionPane.YES_NO_OPTION);
        //sim = 0, nao = 1  
        if (resposta == 0) {
            System.exit(0);
        }
    }//GEN-LAST:event_Confirma

    private void cbCategoriaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbCategoriaActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_cbCategoriaActionPerformed

    private void btAlterarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAlterarActionPerformed

        produto.setId(Integer.parseInt(tfId.getText()));
        produto.setBarCode(tfBarCode.getText());
        produto.setCompra(Float.parseFloat(ftfCompra.getText().replace(",", ".")));
        produto.setNomeProduto(tfProduto.getText());
        produto.setQuantidade(Integer.parseInt(tfQuantidade.getText()));
        produto.setVenda(Float.parseFloat(ftfVenda.getText().replace(",", ".")));
        produto.setCategoria(cbCategoria.getSelectedItem().toString());
        produto.setLogEntrada("Produto: " + tfProduto.getText() + " Quantidade comprada: " + tfQuantidade.getText() + " Vendedor: " + tfVendedor.getText() + " Data de compra: " + tfData.getText());
        conectaProdutos.altera(produto);
        listaProd = conectaProdutos.listaTodosProdutos();
        mostrarPesquisa(listaProd);

    }//GEN-LAST:event_btAlterarActionPerformed
    private void ftfCompraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ftfCompraActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_ftfCompraActionPerformed

    private void corID(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_corID
        tfId.setBackground(Color.white);
    }//GEN-LAST:event_corID

    private void corProduto(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_corProduto
        tfProduto.setBackground(Color.white);
    }//GEN-LAST:event_corProduto

    private void corQuantidade(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_corQuantidade
        tfQuantidade.setBackground(Color.white);
    }//GEN-LAST:event_corQuantidade

    private void corVenda(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_corVenda
        ftfVenda.setBackground(Color.white);
    }//GEN-LAST:event_corVenda

    private void corCompra(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_corCompra
        ftfCompra.setBackground(Color.white);
    }//GEN-LAST:event_corCompra

    private void corBarcode(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_corBarcode
        tfBarCode.setBackground(Color.white);
    }//GEN-LAST:event_corBarcode

    private void btRemoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRemoverActionPerformed
        produto.setId(Integer.parseInt(tfId.getText()));
        conectaProdutos.remove(produto);
        limparTudo();
    }//GEN-LAST:event_btRemoverActionPerformed

    private void itemMenuPrincipalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemMenuPrincipalActionPerformed
        new MenuPrincipal().setVisible(true);
        dispose();
    }//GEN-LAST:event_itemMenuPrincipalActionPerformed

    private void itemMenuCadastroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemMenuCadastroActionPerformed
        new MenuCadastro().setVisible(true);
    }//GEN-LAST:event_itemMenuCadastroActionPerformed

    private void itemMenuGerenciamentoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemMenuGerenciamentoActionPerformed
        new MenuGerenciamento().setVisible(true);
    }//GEN-LAST:event_itemMenuGerenciamentoActionPerformed

    private void itemFecharActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemFecharActionPerformed
        int resposta = JOptionPane.showConfirmDialog(null, "Deseja realmente encerrar o programa", "Confirmação", JOptionPane.YES_NO_OPTION);
        if (resposta == 0) {
            System.exit(0);
            dispose();
        }
    }//GEN-LAST:event_itemFecharActionPerformed

    private void itemCadastraDistribuidoresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemCadastraDistribuidoresActionPerformed
        new CadastroDistribuidores().setVisible(true);
    }//GEN-LAST:event_itemCadastraDistribuidoresActionPerformed

    private void itemCadastraVendedoresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemCadastraVendedoresActionPerformed
        new CadastroVendedores().setVisible(true);
    }//GEN-LAST:event_itemCadastraVendedoresActionPerformed

    private void itemCadastraProdutosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemCadastraProdutosActionPerformed
        new CadastroProdutos().setVisible(true);
    }//GEN-LAST:event_itemCadastraProdutosActionPerformed

    private void itemCadastraSaidaEstoqueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemCadastraSaidaEstoqueActionPerformed
        new CadastroSaidasEstoque().setVisible(true);
    }//GEN-LAST:event_itemCadastraSaidaEstoqueActionPerformed

    private void itemGerenciaCategoriasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemGerenciaCategoriasActionPerformed
        new GerenciaCategorias().setVisible(true);
    }//GEN-LAST:event_itemGerenciaCategoriasActionPerformed

    private void itemGerenciaDistribuidoresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemGerenciaDistribuidoresActionPerformed
        new GerenciaDistribuidores().setVisible(true);

    }//GEN-LAST:event_itemGerenciaDistribuidoresActionPerformed

    private void itemGerenciaGarantiasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemGerenciaGarantiasActionPerformed
        new GerenciaGarantias().setVisible(true);

    }//GEN-LAST:event_itemGerenciaGarantiasActionPerformed

    private void itemGerenciaProdutosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemGerenciaProdutosActionPerformed
        new GerenciaProdutos().setVisible(true);
    }//GEN-LAST:event_itemGerenciaProdutosActionPerformed

    private void itemGerenciaVendedoresActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemGerenciaVendedoresActionPerformed
        new GerenciaVendedores().setVisible(true);
    }//GEN-LAST:event_itemGerenciaVendedoresActionPerformed

    private void itemSobreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_itemSobreActionPerformed
        JOptionPane.showMessageDialog(null, "Programa criado por Danilo Vicente Diorio \n\n\n Sob Licença GPL.");
    }//GEN-LAST:event_itemSobreActionPerformed

    private void corCbCateg(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_corCbCateg
        cbCategoria.setBackground(Color.getColor("214,217,223"));
    }//GEN-LAST:event_corCbCateg

    private void clique(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_clique
        if (evt.getButton() == 3) {
            menuBotao.show(this, evt.getXOnScreen(), evt.getYOnScreen());
            int linha = tableLista.rowAtPoint(evt.getPoint());
            tableLista.setRowSelectionInterval(linha, linha);
            tabelaLinhaSelecionada(tableLista.getSelectedRow());

        }
    }//GEN-LAST:event_clique

    private void logEntradaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_logEntradaActionPerformed
        logProdutos log = new logProdutos();
        System.out.println(conectaProdutos.listaProduto(tfId.getText(), 5).get(0).getLogEntrada());
        String aux = conectaProdutos.listaProduto(tfId.getText(), 5).get(0).getLogEntrada();
        if (aux.isEmpty()) {
            aux = "Nenhum histórico cadastrado";
        }
        log.setTexto(aux);
        log.setVisible(true);

    }//GEN-LAST:event_logEntradaActionPerformed

    private void logSaidaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_logSaidaActionPerformed
        logProdutos log = new logProdutos();
        System.out.println(conectaProdutos.listaProduto(tfId.getText(), 5).get(0).getLogSaida());
        String aux = conectaProdutos.listaProduto(tfId.getText(), 5).get(0).getLogSaida();
        if (aux.length() == 1) {
            aux = "Nenhum histórico cadastrado";
        }
        log.setTexto(aux);
        log.setVisible(true);
    }//GEN-LAST:event_logSaidaActionPerformed
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(GerenciaProdutos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(GerenciaProdutos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(GerenciaProdutos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(GerenciaProdutos.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new GerenciaProdutos().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAlterar;
    private javax.swing.JButton btLimpar;
    private javax.swing.JButton btListar;
    private javax.swing.JButton btRemover;
    private javax.swing.JButton btVoltar;
    private javax.swing.JComboBox cbCategoria;
    private javax.swing.JFormattedTextField ftfCompra;
    private javax.swing.JFormattedTextField ftfVenda;
    private javax.swing.JMenuItem itemCadastraDistribuidores;
    private javax.swing.JMenuItem itemCadastraProdutos;
    private javax.swing.JMenuItem itemCadastraSaidaEstoque;
    private javax.swing.JMenuItem itemCadastraVendedores;
    private javax.swing.JMenuItem itemFechar;
    private javax.swing.JMenuItem itemGerenciaCategorias;
    private javax.swing.JMenuItem itemGerenciaDistribuidores;
    private javax.swing.JMenuItem itemGerenciaGarantias;
    private javax.swing.JMenuItem itemGerenciaProdutos;
    private javax.swing.JMenuItem itemGerenciaVendedores;
    private javax.swing.JMenuItem itemMenuCadastro;
    private javax.swing.JMenuItem itemMenuGerenciamento;
    private javax.swing.JMenuItem itemMenuPrincipal;
    private javax.swing.JMenuItem itemSobre;
    private javax.swing.JFormattedTextField jFormattedTextField3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JLabel lbBarCode;
    private javax.swing.JLabel lbCategoria;
    private javax.swing.JLabel lbCompra;
    private javax.swing.JLabel lbId;
    private javax.swing.JLabel lbMessage;
    private javax.swing.JLabel lbProduto;
    private javax.swing.JLabel lbQuantidade;
    private javax.swing.JLabel lbVenda;
    private javax.swing.JMenuItem logEntrada;
    private javax.swing.JMenuItem logSaida;
    private javax.swing.JMenu menuAjuda;
    private javax.swing.JMenu menuArquivo;
    private javax.swing.JPopupMenu menuBotao;
    private javax.swing.JMenu menuCadastro;
    private javax.swing.JMenu menuGerenciamento;
    private javax.swing.JPanel panelBotao;
    private javax.swing.JPanel panelFiltro;
    private javax.swing.JPanel panelLista;
    private javax.swing.JTable tableLista;
    private javax.swing.JTextField tfBarCode;
    private javax.swing.JTextField tfData;
    private javax.swing.JTextField tfId;
    private javax.swing.JTextField tfProduto;
    private javax.swing.JTextField tfQuantidade;
    private javax.swing.JTextField tfVendedor;
    // End of variables declaration//GEN-END:variables

    private void mostrarPesquisa(List<Produto> lista) {
        this.listaProd = lista;
        while (model.getRowCount() > 0) {
            model.removeRow(0);
        }
        if (lista.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Valor não encontrado");
        } else {
            for (int i = 0; i < lista.size(); i++) {
                String[] linha = {null, null, null, null, null, null};
                model.addRow(linha);
                model.setValueAt(lista.get(i).getNomeProduto(), i, 0);
                model.setValueAt(lista.get(i).getBarCode(), i, 1);
                model.setValueAt(lista.get(i).getCategoria(), i, 2);
                model.setValueAt(lista.get(i).getQuantidade(), i, 3);
                model.setValueAt(lista.get(i).getVenda(), i, 4);
                model.setValueAt(lista.get(i).getCompra(), i, 5);
            }
        }

    }

    private void tabelaLinhaSelecionada(int i) {
        ftfCompra.setEditable(true);
        ftfVenda.setEditable(true);
        tfId.setText(String.valueOf(listaProd.get(i).getId()));
        tfProduto.setText(listaProd.get(i).getNomeProduto());
        tfBarCode.setText(listaProd.get(i).getBarCode());
        cbCategoria.setSelectedItem(listaProd.get(i).getCategoria());
        tfQuantidade.setText(String.valueOf(listaProd.get(i).getQuantidade()));
        ftfCompra.setText(String.valueOf(listaProd.get(i).getCompra()));
        ftfVenda.setText(String.valueOf(listaProd.get(i).getVenda()));
        tfVendedor.setText(listaProd.get(i).getVendedor());

    }

    private void limparTudo() {
        tfId.setBackground(Color.WHITE);
        ftfCompra.setBackground(Color.WHITE);
        ftfVenda.setBackground(Color.WHITE);
        cbCategoria.setBackground(Color.WHITE);
        tfBarCode.setBackground(Color.WHITE);
        tfProduto.setBackground(Color.WHITE);
        tfQuantidade.setBackground(Color.WHITE);
        tfId.setText(null);
        ftfCompra.setText(null);
        ftfVenda.setText(null);
        tfBarCode.setText(null);
        cbCategoria.setSelectedIndex(-1);
        tfProduto.setText(null);
        tfQuantidade.setText(null);
        listaProd = conectaProdutos.listaTodosProdutos();
        mostrarPesquisa(listaProd);
        tableLista.clearSelection();
    }

    private void carregaCB(List<Categoria> listaCategoria) {
        if (listaCategoria.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Sem categorias cadastras");
        } else {
            modeloCombo.removeAllElements();
            for (int i = 0; i < listaCategoria.size(); i++) {
                modeloCombo.addElement(listaCategoria.get(i).getCategoria());
            }
        }

    }

    private boolean confirmaCampos() {
                boolean cond = true;
        int dia = 0, mes = 0, ano = 0, quant = 0;
        float valorCompra = 0, valorVenda = 0;
        String auxprod, barCode, vendedor, auxcatg, erro = "";
        try {
            if (tfBarCode.getText().isEmpty() || tfProduto.getText().isEmpty() || tfQuantidade.getText().isEmpty() || ftfCompra.getText().isEmpty() || tfData.getText().isEmpty() || ftfVenda.getText().isEmpty() || cbCategoria.getSelectedIndex() == -1 || tfVendedor.getText().isEmpty()) {

                if (tfBarCode.getText().equals("             ")) {
                    tfBarCode.setBackground(Color.red);
                }
                if (tfProduto.getText().isEmpty()) {
                    tfProduto.setBackground(Color.red);
                }
                if (tfQuantidade.getText().isEmpty()) {
                    tfQuantidade.setBackground(Color.red);
                }
                if (ftfCompra.getText().isEmpty()) {
                    ftfCompra.setBackground(Color.red);
                }
                if (tfData.getText().equals("  /  /    ")) {
                    tfData.setBackground(Color.red);
                }
                if (ftfVenda.getText().isEmpty()) {
                    ftfVenda.setBackground(Color.red);
                }
                if (cbCategoria.getSelectedIndex() == -1) {
                    cbCategoria.setBackground(Color.red);
                }

                if (tfVendedor.getText().isEmpty()) {
                    tfVendedor.setBackground(Color.red);
                }
                erro += "Favor cadastrar os campos em vermelho. ";
                cond = false;
            } else {
                barCode = tfBarCode.getText();
                quant = Integer.parseInt(tfQuantidade.getText());
                dia = Integer.parseInt(tfData.getText().substring(0, 2));
                mes = Integer.parseInt(tfData.getText().substring(3, 5));
                ano = Integer.parseInt(tfData.getText().substring(6));
                valorCompra = Float.parseFloat(ftfCompra.getText().replace(",", "."));
                valorVenda = Float.parseFloat(ftfVenda.getText().replace(",", "."));
                auxcatg = cbCategoria.getSelectedItem().toString();
                vendedor = tfVendedor.getText();
                auxprod = tfProduto.getText();

                //verifica data
                if (dia > 31 || dia < 0 || mes > 12 || mes < 0 || ano < 0 || ano > 9999) {
                    tfData.setBackground(Color.red);
                    erro += "Data inválida. ";
                    cond = false;
                } else {
                    if (dia > 30 && mes == 4 || dia > 30 && mes == 6 || dia > 30 && mes == 9 || dia > 30 && mes == 11) {
                        tfData.setBackground(Color.red);
                        erro += "Esse mês só tem 30 dias";
                        cond = false;
                    } //meses 30 dias
                    if (dia > 29 && mes == 2) {
                       tfData.setBackground(Color.red);
                        erro += "Fevereiro não tem mais de 29 dias";
                        cond = false;
                    } //fevereiro
                    if (dia == 29 && mes == 2 && ano % 4 != 0 || ano % 100 == 0 && ano % 400 != 0) {
                        tfData.setBackground(Color.red);
                        erro += "Ano não é bissexto";
                        cond = false;
                    } //bissexto
                } // final do verifica data
                if (barCode.matches("^[0-9]*$") == false) {
                    tfBarCode.setBackground(Color.red);
                    erro += "Código de barra invalido";
                    cond = false;
                }
                if (quant <= 0) {
                    tfQuantidade.setBackground(Color.red);
                    erro += "Quantidade inválida";
                    cond = false;
                }
                if (valorCompra <= 0) {
                    ftfCompra.setBackground(Color.red);
                    erro += "Valor de compra inválido";
                    cond = false;
                }
                if (valorVenda <= 0) {
                    ftfVenda.setBackground(Color.red);
                    erro += "Valor de venda inválido";
                    cond = false;
                }
            }
        } catch (NumberFormatException e) {
            if (dia == 0 || mes == 0 || ano == 0) {
                tfData.setBackground(Color.red);
                erro += "Data não foi preenchida corretamente. ";
                cond = false;
            }

            if (valorCompra == 0) {
                ftfCompra.setBackground(Color.red);
                erro += "Valor de compra inválido ";
                cond = false;

            }

            if (valorVenda == 0) {
                ftfVenda.setBackground(Color.red);
                erro += "Valor de venda inválido";
                cond = false;
            }

        }
        lbMessage.setText(erro);
        return cond;
    }
}
